The present invention relates generally to the electrical verification of devices, such as microprocessors, digital signal processing (DSP) devices, and application specific integrated circuits (ASICs), that are capable of emulating their own results, and more particularly to a method and apparatus for improving electrical verification throughput of such devices by permuting code sequences and initial context of code sequences.
Electrical verification of devices is performed to detect various electrical failures or weaknesses, as opposed to functional failures, of the devices. Electrical failures or weaknesses may be considered to be related to the electrical parameters, such as frequency, voltage, or temperature, that define the operating point under which a device must operate. The electrical robustness and reliability of the device may therefore be tested by subjecting the device to particular code sequences that are designed to test the electrical parameters of the device.
To date, electrical verification of devices that are capable of emulating their own results, such as microprocessors, digital signal processing (DSP) devices, and application specific integrated circuits (ASICs), has been heavily dependent upon software emulation of the device to generate predicted results against which actual results, generated by actually running an appropriate test case or code sequence on the device itself, can be compared. The comparison of actual and predicted test results provides an indication of how well the device is performing. A major drawback of this approach to electrical device verification is that it is inherently slow due to the vast majority of time that is spent in software emulation generating the predicted results. A related concern is the problem of tracking down emulation problems, commonly known as xe2x80x9cemulation bugs,xe2x80x9d that are often associated with software emulation.
One approach that may be employed to circumvent the need to employ software emulation to obtain predicted results is to compare the device being tested to a known good part or device that serves as a standard against which a device to tested may be compared. By comparing test results of the device being tested to the test results associated with the known good part, deficiencies of the device being tested may be readily identified. This approach, however, depends upon the existence of a known good part that can serve as the standard. In those situations in which the device is a new technology for which there does not yet exist a known good part this approach is not feasible.
There is therefore an unmet need in the art to be able to enhance electrical verification of devices by lessening the dependence upon software emulation and testing using known good devices. Such an approach can be expected to lessen the time required for electrical verification, minimize the occurrence of emulation bugs, and otherwise render a more efficient electrical verification process.
Therefore, according to the present invention, a method for permuting code sequences and the initial context upon which a code sequence operates provides for test cases used for electrical verification of devices to be quickly created. The methodology comprises running a code sequence on the device to generate first results, permuting the code sequence, and running the permuted code sequence on the device to generate second results. Permuting the code sequence may refer to permuting an initial context under which the device operates, referred to as context permutation, or permuting the code sequence itself. Context permutation allows those electrical failures of the device that are dependent upon initial context data values to be quickly discovered and provides for an improved rate of detection of electrical device failures. Permuting the code sequence itself allows for more robust testing of the device by providing a better suite of verification code sequences than could be achieved by modifying only the initial context of the code sequence.